package com.campusbackend.utils;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

/**
 * 管理员密码工具类
 * 用于生成BCrypt加密的管理员密码
 * 
 * @author yezi
 * @since 2025-07-27
 */
public class AdminPasswordUtil {
    
    private static final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
    
    /**
     * 生成BCrypt加密的密码
     * @param plainPassword 明文密码
     * @return 加密后的密码
     */
    public static String encodePassword(String plainPassword) {
        return passwordEncoder.encode(plainPassword);
    }
    
    /**
     * 验证密码
     * @param plainPassword 明文密码
     * @param encodedPassword 加密后的密码
     * @return 是否匹配
     */
    public static boolean matches(String plainPassword, String encodedPassword) {
        return passwordEncoder.matches(plainPassword, encodedPassword);
    }
    
    /**
     * 主方法，用于生成管理员密码
     * 运行此方法可以生成admin123的BCrypt加密密码
     */
    public static void main(String[] args) {
        String plainPassword = "admin123";
        String encodedPassword = encodePassword(plainPassword);
        
        System.out.println("明文密码: " + plainPassword);
        System.out.println("加密密码: " + encodedPassword);
        System.out.println();
        System.out.println("请将以下SQL语句在数据库中执行，更新管理员密码：");
        System.out.println("UPDATE admin_users SET password = '" + encodedPassword + "' WHERE username = 'admin';");
        System.out.println();
        System.out.println("验证结果: " + matches(plainPassword, encodedPassword));
    }
}
